#ifndef LISTAHD_H_
#define LISTAHD_H_

#include "lista.h"
#include <stdlib.h>

typedef struct{
	int id;
	int Sincornizando;
	int32_t Sector_Ini;
	int32_t Sector_Fin;

	int32_t Sector_Hasta_Parcial;//hasta donde tiene q sincronizar parcial
	int32_t CantSincro;//cant sincro parcial
	int32_t Sector_Hasta_Sincronizado;//cant sincro parcial
	int32_t CantTotalSincro;//cant total a sincronizar

	pthread_t hilo;
	pthread_t hiloSincro;
	tLista* Pedidos; //lista de pedidos x disco
	int Socket;

	int Desconectado;
}Disco;

typedef struct tNodoHD{
    Disco Dato;
    struct tNodoHD* Sig;
	struct tNodoHD* Ant;
}tNodoHD;

typedef struct {
	tNodoHD* Actual;
	tNodoHD* Primero;
	tNodoHD* Ultimo;
	int32_t length;
	pthread_mutex_t sem;
}tListaHD;


void HDlista_init(tListaHD* l);
void HDlista_push(tListaHD* l, Disco d);
void HDlista_popNodo(tListaHD* l, tNodoHD* n);
void HDlista_getfirst(tListaHD* l, tNodoHD** n);
void HDlista_getLast(tListaHD* l, tNodoHD** n);
void HDlista_getNext(tListaHD* l, tNodoHD** n);

#endif /* LISTAHD_H_ */
